/*
 * Copyright (c) 2021, NVIDIA CORPORATION.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <vector>

std::vector<float> additive_trainf = {
  0.0,          0.248689887,    0.481753674,    0.684547106,     0.844327926,  0.951056516,
  0.998026728,  0.982287251,    0.904827052,    0.770513243,     0.587785252,  0.368124553,
  0.125333234,  -0.125333234,   -0.368124553,   -0.587785252,    -0.770513243, -0.904827052,
  -0.982287251, -0.998026728,   -0.951056516,   -0.844327926,    -0.684547106, -0.481753674,
  -0.248689887, -2.4492936e-16, 0.248689887,    0.481753674,     0.684547106,  0.844327926,
  0.951056516,  0.998026728,    0.982287251,    0.904827052,     0.770513243,  0.587785252,
  0.368124553,  0.125333234,    -0.125333234,   -0.368124553,    -0.587785252, -0.770513243,
  -0.904827052, -0.982287251,   -0.998026728,   -0.951056516,    -0.844327926, -0.684547106,
  -0.481753674, -0.248689887,   -4.8985872e-16, 0.248689887,     0.481753674,  0.684547106,
  0.844327926,  0.951056516,    0.998026728,    0.982287251,     0.904827052,  0.770513243,
  0.587785252,  0.368124553,    0.125333234,    -0.125333234,    -0.368124553, -0.587785252,
  -0.770513243, -0.904827052,   -0.982287251,   -0.998026728,    -0.951056516, -0.844327926,
  -0.684547106, -0.481753674,   -0.248689887,   -7.34788079e-16, 0.248689887,  0.481753674,
  0.684547106,  0.844327926,    0.951056516,    0.998026728,     0.982287251,  0.904827052,
  0.770513243,  0.587785252,    0.368124553,    0.125333234,     -0.125333234, -0.368124553};

std::vector<float> additive_testf = {-0.587785252,
                                     -0.770513243,
                                     -0.904827052,
                                     -0.982287251,
                                     -0.998026728,
                                     -0.951056516,
                                     -0.844327926,
                                     -0.684547106,
                                     -0.481753674,
                                     -0.248689887};

std::vector<double> additive_traind = {
  0.0,          0.248689887,    0.481753674,    0.684547106,     0.844327926,  0.951056516,
  0.998026728,  0.982287251,    0.904827052,    0.770513243,     0.587785252,  0.368124553,
  0.125333234,  -0.125333234,   -0.368124553,   -0.587785252,    -0.770513243, -0.904827052,
  -0.982287251, -0.998026728,   -0.951056516,   -0.844327926,    -0.684547106, -0.481753674,
  -0.248689887, -2.4492936e-16, 0.248689887,    0.481753674,     0.684547106,  0.844327926,
  0.951056516,  0.998026728,    0.982287251,    0.904827052,     0.770513243,  0.587785252,
  0.368124553,  0.125333234,    -0.125333234,   -0.368124553,    -0.587785252, -0.770513243,
  -0.904827052, -0.982287251,   -0.998026728,   -0.951056516,    -0.844327926, -0.684547106,
  -0.481753674, -0.248689887,   -4.8985872e-16, 0.248689887,     0.481753674,  0.684547106,
  0.844327926,  0.951056516,    0.998026728,    0.982287251,     0.904827052,  0.770513243,
  0.587785252,  0.368124553,    0.125333234,    -0.125333234,    -0.368124553, -0.587785252,
  -0.770513243, -0.904827052,   -0.982287251,   -0.998026728,    -0.951056516, -0.844327926,
  -0.684547106, -0.481753674,   -0.248689887,   -7.34788079e-16, 0.248689887,  0.481753674,
  0.684547106,  0.844327926,    0.951056516,    0.998026728,     0.982287251,  0.904827052,
  0.770513243,  0.587785252,    0.368124553,    0.125333234,     -0.125333234, -0.368124553};

std::vector<double> additive_testd = {-0.587785252,
                                      -0.770513243,
                                      -0.904827052,
                                      -0.982287251,
                                      -0.998026728,
                                      -0.951056516,
                                      -0.844327926,
                                      -0.684547106,
                                      -0.481753674,
                                      -0.248689887};

std::vector<float> additive_normalized_trainf = {
  0.5,        0.6245908,  0.74135309, 0.84295029, 0.92299865, 0.97646846, 1.,         0.9921147,
  0.95330803, 0.88601834, 0.7944737,  0.6844262,  0.56279052, 0.43720948, 0.3155738,  0.2055263,
  0.11398166, 0.04669197, 0.0078853,  0.,         0.02353154, 0.07700135, 0.15704971, 0.25864691,
  0.3754092,  0.5,        0.6245908,  0.74135309, 0.84295029, 0.92299865, 0.97646846, 1.,
  0.9921147,  0.95330803, 0.88601834, 0.7944737,  0.6844262,  0.56279052, 0.43720948, 0.3155738,
  0.2055263,  0.11398166, 0.04669197, 0.0078853,  0.,         0.02353154, 0.07700135, 0.15704971,
  0.25864691, 0.3754092,  0.5,        0.6245908,  0.74135309, 0.84295029, 0.92299865, 0.97646846,
  1.,         0.9921147,  0.95330803, 0.88601834, 0.7944737,  0.6844262,  0.56279052, 0.43720948,
  0.3155738,  0.2055263,  0.11398166, 0.04669197, 0.0078853,  0.,         0.02353154, 0.07700135,
  0.15704971, 0.25864691, 0.3754092,  0.5,        0.6245908,  0.74135309, 0.84295029, 0.92299865,
  0.97646846, 1.,         0.9921147,  0.95330803, 0.88601834, 0.7944737,  0.6844262,  0.56279052,
  0.43720948, 0.3155738};

std::vector<float> additive_normalized_testf = {0.2055263,
                                                0.11398166,
                                                0.04669197,
                                                0.0078853,
                                                0.,
                                                0.02353154,
                                                0.07700135,
                                                0.15704971,
                                                0.25864691,
                                                0.3754092};

std::vector<double> additive_normalized_traind = {
  0.5,        0.6245908,  0.74135309, 0.84295029, 0.92299865, 0.97646846, 1.,         0.9921147,
  0.95330803, 0.88601834, 0.7944737,  0.6844262,  0.56279052, 0.43720948, 0.3155738,  0.2055263,
  0.11398166, 0.04669197, 0.0078853,  0.,         0.02353154, 0.07700135, 0.15704971, 0.25864691,
  0.3754092,  0.5,        0.6245908,  0.74135309, 0.84295029, 0.92299865, 0.97646846, 1.,
  0.9921147,  0.95330803, 0.88601834, 0.7944737,  0.6844262,  0.56279052, 0.43720948, 0.3155738,
  0.2055263,  0.11398166, 0.04669197, 0.0078853,  0.,         0.02353154, 0.07700135, 0.15704971,
  0.25864691, 0.3754092,  0.5,        0.6245908,  0.74135309, 0.84295029, 0.92299865, 0.97646846,
  1.,         0.9921147,  0.95330803, 0.88601834, 0.7944737,  0.6844262,  0.56279052, 0.43720948,
  0.3155738,  0.2055263,  0.11398166, 0.04669197, 0.0078853,  0.,         0.02353154, 0.07700135,
  0.15704971, 0.25864691, 0.3754092,  0.5,        0.6245908,  0.74135309, 0.84295029, 0.92299865,
  0.97646846, 1.,         0.9921147,  0.95330803, 0.88601834, 0.7944737,  0.6844262,  0.56279052,
  0.43720948, 0.3155738};

std::vector<double> additive_normalized_testd = {0.2055263,
                                                 0.11398166,
                                                 0.04669197,
                                                 0.0078853,
                                                 0.,
                                                 0.02353154,
                                                 0.07700135,
                                                 0.15704971,
                                                 0.25864691,
                                                 0.3754092};

std::vector<float> multiplicative_trainf = {
  112, 118, 132, 129, 121, 135, 148, 148, 136, 119, 104, 118, 115, 126, 141, 135, 125, 149, 170,
  170, 158, 133, 114, 140, 145, 150, 178, 163, 172, 178, 199, 199, 184, 162, 146, 166, 171, 180,
  193, 181, 183, 218, 230, 242, 209, 191, 172, 194, 196, 196, 236, 235, 229, 243, 264, 272, 237,
  211, 180, 201, 204, 188, 235, 227, 234, 264, 302, 293, 259, 229, 203, 229, 242, 233, 267, 269,
  270, 315, 364, 347, 312, 274, 237, 278, 284, 277, 317, 313, 318, 374, 413, 405, 355, 306, 271,
  306, 315, 301, 356, 348, 355, 422, 465, 467, 404, 347, 305, 336, 340, 318, 362, 348, 363, 435,
  491, 505, 404, 359, 310, 337, 360, 342, 406, 396, 420, 472, 548, 559, 463, 407, 362, 405};

std::vector<float> multiplicative_testf = {
  417, 391, 419, 461, 472, 535, 622, 606, 508, 461, 390, 432};

std::vector<double> multiplicative_traind = {
  112, 118, 132, 129, 121, 135, 148, 148, 136, 119, 104, 118, 115, 126, 141, 135, 125, 149, 170,
  170, 158, 133, 114, 140, 145, 150, 178, 163, 172, 178, 199, 199, 184, 162, 146, 166, 171, 180,
  193, 181, 183, 218, 230, 242, 209, 191, 172, 194, 196, 196, 236, 235, 229, 243, 264, 272, 237,
  211, 180, 201, 204, 188, 235, 227, 234, 264, 302, 293, 259, 229, 203, 229, 242, 233, 267, 269,
  270, 315, 364, 347, 312, 274, 237, 278, 284, 277, 317, 313, 318, 374, 413, 405, 355, 306, 271,
  306, 315, 301, 356, 348, 355, 422, 465, 467, 404, 347, 305, 336, 340, 318, 362, 348, 363, 435,
  491, 505, 404, 359, 310, 337, 360, 342, 406, 396, 420, 472, 548, 559, 463, 407, 362, 405};

std::vector<double> multiplicative_testd = {
  417, 391, 419, 461, 472, 535, 622, 606, 508, 461, 390, 432};

std::vector<float> multiplicative_normalized_trainf = {
  0.01644402, 0.02802703, 0.05505405, 0.04926255, 0.03381853, 0.06084556, 0.08594208, 0.08594208,
  0.06277606, 0.02995753, 0.001,      0.02802703, 0.02223552, 0.04347104, 0.07242857, 0.06084556,
  0.04154054, 0.08787259, 0.12841313, 0.12841313, 0.1052471,  0.05698456, 0.02030502, 0.07049807,
  0.08015058, 0.08980309, 0.14385714, 0.11489961, 0.13227413, 0.14385714, 0.18439768, 0.18439768,
  0.15544015, 0.11296911, 0.08208108, 0.12069112, 0.13034363, 0.14771815, 0.17281467, 0.14964865,
  0.15350965, 0.22107722, 0.24424324, 0.26740927, 0.2037027,  0.16895367, 0.13227413, 0.17474517,
  0.17860618, 0.17860618, 0.25582625, 0.25389575, 0.24231274, 0.26933977, 0.30988031, 0.32532432,
  0.25775676, 0.20756371, 0.14771815, 0.18825869, 0.19405019, 0.16316216, 0.25389575, 0.23845174,
  0.25196525, 0.30988031, 0.38323938, 0.36586486, 0.3002278,  0.24231274, 0.19211969, 0.24231274,
  0.26740927, 0.25003475, 0.31567181, 0.31953282, 0.32146332, 0.40833591, 0.5029305,  0.47011197,
  0.4025444,  0.32918533, 0.25775676, 0.33690734, 0.34849035, 0.33497683, 0.41219691, 0.4044749,
  0.41412741, 0.52223552, 0.5975251,  0.58208108, 0.48555598, 0.39096139, 0.32339382, 0.39096139,
  0.40833591, 0.38130888, 0.48748649, 0.47204247, 0.48555598, 0.61489961, 0.6979112,  0.7017722,
  0.58015058, 0.47011197, 0.38903089, 0.44887645, 0.45659846, 0.41412741, 0.4990695,  0.47204247,
  0.501,      0.63999614, 0.74810425, 0.77513127, 0.58015058, 0.49327799, 0.3986834,  0.45080695,
  0.49520849, 0.46045946, 0.58401158, 0.56470656, 0.61103861, 0.71142471, 0.85814286, 0.87937838,
  0.69405019, 0.58594208, 0.4990695,  0.58208108};

std::vector<float> multiplicative_normalized_testf = {0.6052471,
                                                      0.55505405,
                                                      0.60910811,
                                                      0.69018919,
                                                      0.71142471,
                                                      0.83304633,
                                                      1.001,
                                                      0.97011197,
                                                      0.78092278,
                                                      0.69018919,
                                                      0.55312355,
                                                      0.63420463};

std::vector<double> multiplicative_normalized_traind = {
  0.01644402, 0.02802703, 0.05505405, 0.04926255, 0.03381853, 0.06084556, 0.08594208, 0.08594208,
  0.06277606, 0.02995753, 0.001,      0.02802703, 0.02223552, 0.04347104, 0.07242857, 0.06084556,
  0.04154054, 0.08787259, 0.12841313, 0.12841313, 0.1052471,  0.05698456, 0.02030502, 0.07049807,
  0.08015058, 0.08980309, 0.14385714, 0.11489961, 0.13227413, 0.14385714, 0.18439768, 0.18439768,
  0.15544015, 0.11296911, 0.08208108, 0.12069112, 0.13034363, 0.14771815, 0.17281467, 0.14964865,
  0.15350965, 0.22107722, 0.24424324, 0.26740927, 0.2037027,  0.16895367, 0.13227413, 0.17474517,
  0.17860618, 0.17860618, 0.25582625, 0.25389575, 0.24231274, 0.26933977, 0.30988031, 0.32532432,
  0.25775676, 0.20756371, 0.14771815, 0.18825869, 0.19405019, 0.16316216, 0.25389575, 0.23845174,
  0.25196525, 0.30988031, 0.38323938, 0.36586486, 0.3002278,  0.24231274, 0.19211969, 0.24231274,
  0.26740927, 0.25003475, 0.31567181, 0.31953282, 0.32146332, 0.40833591, 0.5029305,  0.47011197,
  0.4025444,  0.32918533, 0.25775676, 0.33690734, 0.34849035, 0.33497683, 0.41219691, 0.4044749,
  0.41412741, 0.52223552, 0.5975251,  0.58208108, 0.48555598, 0.39096139, 0.32339382, 0.39096139,
  0.40833591, 0.38130888, 0.48748649, 0.47204247, 0.48555598, 0.61489961, 0.6979112,  0.7017722,
  0.58015058, 0.47011197, 0.38903089, 0.44887645, 0.45659846, 0.41412741, 0.4990695,  0.47204247,
  0.501,      0.63999614, 0.74810425, 0.77513127, 0.58015058, 0.49327799, 0.3986834,  0.45080695,
  0.49520849, 0.46045946, 0.58401158, 0.56470656, 0.61103861, 0.71142471, 0.85814286, 0.87937838,
  0.69405019, 0.58594208, 0.4990695,  0.58208108};

std::vector<double> multiplicative_normalized_testd = {0.6052471,
                                                       0.55505405,
                                                       0.60910811,
                                                       0.69018919,
                                                       0.71142471,
                                                       0.83304633,
                                                       1.001,
                                                       0.97011197,
                                                       0.78092278,
                                                       0.69018919,
                                                       0.55312355,
                                                       0.63420463};
